草庐IT

LeetCode - 两数之和

全部标签

(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

❓剑指Offer45.把数组排成最小的数难度:中等输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例1:输入:[10,2]输出:“102”示例2:输入:[3,30,34,5,9]输出:“3033459”提示:0说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导0,最后结果不需要去掉前导0💡思路:可以看成是一个排序问题,在比较两个字符串s1和s2的大小时,应该比较的是s1+s2和s2+s1的大小:如果s1+s2,那么应该把s1排在前面,否则应该把s2排在前面。总体流程:初始化:字符串列表strs,保存各数字的字符

Leetcode:【448. 找到所有数组中消失的数字】题解

题目给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所有在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。难度:简单题目链接:448.找到所有数组中消失的数字示例1输入:nums=[4,3,2,7,8,2,3,1]输出:[5,6]示例2输入:nums=[1,1]输出:[2]解题思路:题目意思是再在有n个元素的数组中,找出[1,n]中没有出现的数组,其中n个元素中,可能会出现重复的元素,于是我们就可以再次创建一个临时数组tmp(每个元素置0),存放相应的元素来取消重复的元素。然后遍历整个数组,如果元素为零,则为没有出现

【LeetCode周赛】2022上半年题目精选集——动态规划

文章目录2140.解决智力问题解法1——倒序DP(填表法)解法2——正序DP(刷表法)⭐⭐⭐2167.移除所有载有违禁货物车厢所需的最少时间⭐⭐⭐解法1——前缀和⭐⭐⭐⭐⭐解法2——前后缀分解+动态规划代码1——看了思路之后自己写的代码2——代码1的优化(一次遍历)⭐2172.数组的最大与和(状态压缩DP)⭐⭐⭐⭐⭐思路代码补充:相似题目——1879.两个数组最小的异或值之和⭐⭐⭐2188.完成比赛的最少时间⭐⭐⭐⭐⭐思路——结合性质巧妙线性DP(预处理每种圈数的最短时间+动态规划)代码2209.用地毯覆盖后的最少白色砖块⭐⭐⭐⭐⭐思路——考虑是否使用第i条地毯且其末尾覆盖第j块板砖代码221

LeetCode刷题(数组):详解两数之和与合并两个有序数组

1.两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例一:示例二:示例三:1.思路一(暴力求解)直接暴力求解,采用二重循环,依次遍历数组中的两个元素,查看当前的两个元素之和是否等于目标元素target的值,如果等于,就把当前遍历的索引i,j分别放入目标数组中返回即可!classSolution{publicint[]twoSum(int[]nums,inttarget){int[]list=newi

C++信息学奥赛1121:计算矩阵边缘元素之和

题解:i0orj0orin-1orjm-1orin-1orjm-1代码:#include//包含输入输出流库#include//包含数学函数库usingnamespacestd;//使用标准命名空间intmain(){ intn,m; cin>>n>>m;//输入n和m的值 intarr[n][m];//定义大小为n*m的数组 for(inti=0;in;i++){//外层循环遍历行 for(intj=0;jm;j++){//内层循环遍历列 cin>>arr[i][j];//输入数组元素的值 } } intsum=0; for(inti=0;in;i++){//外层循环遍历行 for

Leetcode.73矩阵置零

给定一个 mxn 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法classSolution{publicvoidsetZeroes(int[][]matrix){intm=matrix.length,n=matrix[0].length;boolean[]row=newboolean[m];boolean[]col=newboolean[n];for(inti=0;i

​LeetCode解法汇总2679. 矩阵中的和

目录链接:力扣编程题-解法汇总_分享+记录-CSDN博客GitHub同步刷题项目:https://github.com/September26/java-algorithms原题链接:力扣描述:给你一个下标从 0 开始的二维整数数组 nums 。一开始你的分数为 0 。你需要执行以下操作直到矩阵变为空:矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。在步骤1删除的所有数字中找到最大的一个数字,将它添加到你的 分数 中。请你返回最后的 分数 。示例1:输入:nums=[[7,2,1],[6,4,2],[6,5,3],[3,2,1]]输出:15解释:第一步操作

LeetCode-复制带随机指针的链表

题目描述:给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。例如,如果原链表中有X和Y两个节点,其中X.random-->Y。那么在复制链表中对应的两个节点x和y,同样有x.random-->y。返回复制链表的头节点。用一个由 n 个节点组成的链表来表示输入/输出中的

leetcode链表题报错 runtime error: member access within null pointer of type ‘ListNode‘

今天在做leetcode203:移除链表元素时,反复遇到了报错:runtimeerror:memberaccesswithinnullpointeroftype‘ListNode’(solution.cpp),报错提示的意思是试图访问’ListNode空指针类型的成员,就浅浅记录一下修复bug的过程吧。。。。刚开始的代码是这样的,逻辑是先建立一个头结点放到链表头部,这样就可以统一链表结点删除的操作了,然后创建ListNode类型指针cur,初始化其指向头结点的下一个结点,利用while循环遍历链表,当cur指针指向Null时停止遍历。然后就报错了…classSolution{public:Li

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】

❓剑指Offer48.最长不含重复字符的子字符串难度:中等请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入:“abcabcbb”输出:3解释:因为无重复字符的最长子串是“abc”,所以其长度为3。示例2:输入:“bbbbb”输出:1解释:因为无重复字符的最长子串是“b”,所以其长度为1。示例3:输入:“pwwkew”输出:3解释:因为无重复字符的最长子串是“wke”,所以其长度为3。请注意,你的答案必须是子串的长度,“pwke”是一个子序列,不是子串。提示:s.length注意:本题与3.无重复字符的最长子串相同。💡思路:动态规划定义dp数组,dp[i